import pygame


class Ship:
    """管理⻜船的类"""

    def __init__(self, ai_game):
        """初始化⻜船并设置其初始位置"""
        self.screen = ai_game.screen

        self.settings = ai_game.settings

        self.screen_rect = ai_game.screen.get_rect()
        # 加载⻜船图像并获取其外接矩形
        self.image = pygame.image.load("alien_invasion/images/ship.bmp")
        self.rect = self.image.get_rect()
        # 每艘新⻜船都放在屏幕底部的中央
        self.rect.midbottom = self.screen_rect.midbottom

        # 移动标志（⻜船⼀开始不移动）
        self.moving_right = False

        # 移动标志（⻜船⼀开始不移动）
        self.moving_left = False

        self.x = float(self.rect.x)

    def blitme(self):
        """在指定位置绘制⻜船"""
        self.screen.blit(self.image, self.rect)

    def update(self):
        """根据移动标志调整⻜船的位置"""
        if self.moving_right and self.rect.right < self.screen_rect.right:
            self.x += self.settings.ship_speed
        if self.moving_left and self.rect.left > 0:
            self.x -= self.settings.ship_speed
        # rect.x只能是整数，因此需要中间变量x记录x轴坐标的准确数据，用于判断ship是否出界
        self.rect.x = self.x
    
    def center_ship(self):
        """将⻜船放在屏幕底部的中央"""
        self.rect.midbottom = self.screen_rect.midbottom
        self.x = float(self.rect.x)
